home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 142 / Gekkan Dennou Club - 2000.3 Vol. 142 (Japan).7z / Gekkan Dennou Club - 2000.3 Vol. 142 (Japan) (Track 1).bin / tools / s44play / s44p101s.lzh / dolist.s < prev    next >
Text File  |  1999-11-17  |  2KB  |  114 lines

  1.     .include    global.mac
  2.  
  3. ;----------------------------------------------------------------
  4. ;CDのトラックの一覧を表示する
  5.     .text
  6.     .align    4,$2048
  7. do_list::
  8.     link    a6,#-256
  9.     movem.l    d1-d3/a0-a2,-(sp)
  10.  
  11.     bsr    print_banner
  12.  
  13. ;timera_check/timerd_check/malloc_buffer/make_tableが行われていないので注意
  14.     bsr    init_scsiid
  15.     bmi    99f
  16.     bsr    init_cdrom
  17.     bmi    99f
  18.  
  19.     lea.l    (m_list_banner,pc),a0
  20.     bsr    print
  21.     lea.l    cd_name,a0
  22.     tst.b    (a0)
  23.     beq    @f
  24.     bsr    print
  25. @@:    bsr    crlf
  26.  
  27.     moveq.l    #0,d2            ;音声トラック数
  28.     moveq.l    #0,d3            ;音声フレーム数
  29.  
  30.     lea.l    cdda_trkinf,a2        ;トラック情報レコード
  31.     move.l    cdda_mintrk,d0        ;先頭のトラック番号が1よりも大きかった場合に対応
  32.     subq.b    #1,d0            ;(念のため)
  33.     mulu.w    #trkinf_record_size,d0
  34.     lea.l    (a2,d0.l),a2        ;cdda_mintrkのトラック情報レコードの先頭
  35.  
  36.     move.l    cdda_mintrk,d6        ;開始トラック番号
  37. 10:
  38.     lea.l    (-256,a6),a0
  39.  
  40.     move.b    #' ',(a0)+
  41.     move.b    #' ',(a0)+
  42.  
  43.     move.b    #'[',(a0)+
  44.     move.l    d6,d0            ;今回のトラック番号
  45.     moveq.l    #2,d1
  46.     bsr    iusing
  47.     move.b    #']',(a0)+
  48.  
  49.     moveq.l    #'*',d0
  50.     tst.b    (trkinf_dattrk,a2)    ;-1=データトラック
  51.     bne    @f
  52.     moveq.l    #' ',d0
  53.     addq.b    #1,d2            ;音声トラック数を更新
  54.     add.l    (trkinf_lenfrm,a2),d3    ;音声フレーム数を更新
  55. @@:    move.b    d0,(a0)+
  56.  
  57.     move.b    #' ',(a0)+
  58.  
  59.     move.l    (trkinf_toptim,a2),d0    ;開始位置(00:02:00~)
  60.     bsr    tim2str_pos        ;開始位置
  61.  
  62.     move.b    #' ',(a0)+
  63.     move.b    #'-',(a0)+
  64.     move.b    #' ',(a0)+
  65.  
  66.     move.l    (trkinf_btmtim,a2),d0    ;終了位置(00:02:00~)
  67.     bsr    tim2str_pos        ;終了位置
  68.  
  69.     move.b    #' ',(a0)+
  70.     move.b    #' ',(a0)+
  71.  
  72.     move.l    (trkinf_lentim,a2),d0    ;長さ(00:00:00~)
  73.     bsr    tim2str_len        ;長さ
  74.  
  75.     move.b    #' ',(a0)+
  76.     move.b    #' ',(a0)+
  77.  
  78.     lea.l    (trkinf_name,a2),a1    ;トラック名
  79.     bsr    strcpy
  80.  
  81.     lea.l    (-256,a6),a0
  82.     bsr    printcrlf
  83.  
  84.     lea.l    (trkinf_record_size,a2),a2
  85.     addq.l    #1,d6
  86.     cmp.l    cdda_maxtrk,d6
  87.     bls    10b
  88.  
  89.     lea.l    (m_list_total_1,pc),a0
  90.     bsr    print
  91.  
  92.     move.l    d2,d0            ;音声トラック数
  93.     moveq.l    #2,d1            ;桁数
  94.     bsr    iusing_print
  95.  
  96.     lea.l    (m_list_total_2,pc),a0
  97.     bsr    print
  98.  
  99.     lea.l    (-256,a6),a0
  100.     move.l    d3,d0            ;音声フレーム数
  101.     bsr    frm2str_len
  102.     lea.l    (-256,a6),a0
  103.     bsr    printcrlf
  104.  
  105. 99:    movem.l    (sp)+,d1-d3/a0-a2
  106.     unlk    a6
  107.     rts
  108.  
  109. m_list_banner:        .dc.b    '  番号  開始位置 - 終了位置    長さ    ',0
  110. m_list_total_1:        .dc.b    ' 音声トラック数=',0
  111. m_list_total_2:        .dc.b    '  再生時間=',0
  112.     .even
  113.  
  114.